求三位数组合
lst=[3,6,2,7]
这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们
思路分析
从4个数里面取3个数,且不重复,然后进行拼接,做3个for循环加判断不相等即可。
与排列组合相同,取三个数,不放回,并且有顺序。
C
4
3
∗
P
3
3
=
4
∗
3
!
=
24
C_4^3*P^3_3=4*3!=24
C43∗P33=4∗3!=24种取法可能。(题目特殊,lst各不相同,若有相同需要先在重复中二选一
C
2
1
C_2^1
C21,但对于结果输出不影响,只是增加取法可能)
示例代码
lst=[3,6,2,7]
foriinlst:
forjinlst:
forkinlst:
ifi!=jandj!=kandk!=i:
print(int(str(i)+str(j)+str(k))
判断方式还可以是:
ifinotin(j,k)andj!=k:
分析时间复杂度
在时间复杂度上面n=4,有3个for循环。
第一个for循环中f(n)=n
第二个for循环中f(n)=n^2
第三个for循环中f(n)=n^3